home *** CD-ROM | disk | FTP | other *** search
/ SuperHack / SuperHack CD.bin / CODING / DEMOS / PLP_SMTH.ZIP / VAR.MAC < prev   
Encoding:
Text File  |  1995-07-30  |  1.8 KB  |  86 lines

  1.  
  2. ; =========================================================
  3.  
  4. ; Define macros VAR, VAR_INITIALIZE AND VAR_DEALLOCATE
  5.  
  6. ; by Kim Holviala 11/1994
  7.  
  8.  
  9. ; VAR variable_name, BYTE|WORD|DWORD [, value]
  10. ;   Creates an variable with an optional value
  11.  
  12. ;   VAR x, DWORD, 160 
  13. ;     Creates 3 variables:
  14. ;       1) x      (DWORD, 160)
  15. ;       2) WORD_x (Lenght override)
  16. ;       3) BYTE_x (      -"-      )
  17.  
  18. ; VAR_INITIALIZE
  19. ;   Allocates variables from the stack and sets up the BP-register
  20.  
  21. ; VAR_DEALLOCATE
  22. ;   Releases stack space used by variables
  23.  
  24.  
  25. var_allocate = 0
  26. var_values EQU <>
  27.  
  28. MACRO VAR var_name, var_type_lenght, var_value
  29.   
  30.   var_temp EQU var_type_lenght
  31.   
  32.   IFIDNI %var_temp, <BYTE>
  33.     var_name CATSTR <[BYTE BP+>, %var_allocate, <]>
  34.  
  35.   ELSEIFIDNI %var_temp, <WORD>
  36.     var_name CATSTR <[WORD BP+>, %var_allocate, <]>
  37. ;;    BYTE_&var_name CATSTR <[BYTE PTR BP+>, %var_allocate, <]>
  38.  
  39.   ELSEIFIDNI %var_temp, <DWORD>
  40.     var_name CATSTR <[DWORD BP+>, %var_allocate, <]>
  41. ;;    WORD_&var_name CATSTR <[WORD PTR BP+>, %var_allocate, <]>
  42. ;;    BYTE_&var_name CATSTR <[BYTE PTR BP+>, %var_allocate, <]>
  43.  
  44.   ENDIF
  45.  
  46.   var_allocate = var_allocate + var_type_lenght
  47.  
  48.   var_temp EQU var_value
  49.   
  50.   IFNB var_temp
  51.     var_values CATSTR %var_values, var_name, <,>, %var_temp, <@>
  52.   
  53.   ENDIF
  54.  
  55. ENDM
  56.  
  57.  
  58. MACRO VAR_INITIALIZE
  59.  
  60.   SUB SP,var_allocate
  61.   MOV BP,SP
  62.  
  63.   var_start = 1
  64.   var_end = 1
  65.   var_val_size SIZESTR var_values
  66.   
  67.   WHILE var_end LT var_val_size   
  68.  
  69.     var_end INSTR var_start, var_values, <@>
  70.     var_temp SUBSTR var_values, var_start, var_end - var_start
  71.     MOV var_temp
  72.     var_start = var_end + 1
  73.  
  74.   ENDM
  75.  
  76. ENDM
  77.  
  78.  
  79. MACRO VAR_DEALLOCATE 
  80.   
  81.   ADD SP,var_allocate
  82.  
  83. ENDM
  84.  
  85. ; =========================================================
  86.